graphene_matrix_init_identity (&self->transform);
graphene_matrix_init_identity (&self->child_transform);
+ graphene_point3d_init (&self->offset, 0.f, 0.f, 0.f);
self->opacity = 1.0;
else
graphene_matrix_init_from_matrix (&node->transform, transform);
+ graphene_matrix_translate (&node->transform, &node->offset);
+
+ node->transform_set = !graphene_matrix_is_identity (&node->transform);
+}
+
+void
+gsk_render_node_set_offset (GskRenderNode *node,
+ const graphene_point3d_t *offset)
+{
+ g_return_if_fail (GSK_IS_RENDER_NODE (node));
+ g_return_if_fail (node->is_mutable);
+
+ graphene_point3d_scale (&node->offset, -1, &node->offset);
+ graphene_matrix_translate (&node->transform, &node->offset);
+ graphene_point3d_init_from_point (&node->offset, offset);
+ graphene_matrix_translate (&node->transform, &node->offset);
+
node->transform_set = !graphene_matrix_is_identity (&node->transform);
}
void gsk_render_node_set_transform (GskRenderNode *node,
const graphene_matrix_t *transform);
GDK_AVAILABLE_IN_3_22
+void gsk_render_node_set_offset (GskRenderNode *node,
+ const graphene_point3d_t *offset);
+GDK_AVAILABLE_IN_3_22
void gsk_render_node_set_child_transform (GskRenderNode *node,
const graphene_matrix_t *transform);
GDK_AVAILABLE_IN_3_22
/* Transformations applied to the node */
graphene_matrix_t transform;
+ graphene_point3d_t offset;
+
/* Transformations applied to the children of the node */
graphene_matrix_t child_transform;